var dateUtil = {

    formatArg: {
        format1: 'yyyy-MM-dd hh:mm:ss',
        format2: 'yyyy-MM-dd hh:mm',
        format3: 'yyyy-MM-dd'
    },

    /**
     * 日期时间格式化
     * @param fmt：yyyy-MM-dd hh:mm:ss
     * @param date：Date类型
     * @returns {*}
     */
    format: function (fmt, date) {
        var o = {
            "M+": date.getMonth() + 1,                 //月份
            "d+": date.getDate(),                    //日
            "h+": date.getHours(),                   //小时
            "m+": date.getMinutes(),                 //分
            "s+": date.getSeconds(),                 //秒
            "q+": Math.floor((date.getMonth() + 3) / 3), //季度
            "S": date.getMilliseconds()             //毫秒
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            }
        }
        return fmt;
    },

    // 获取当前日期 eg.2019-01-24
    getNowFormatDate: function () {
        var date = new Date();
        var seperator = "-";
        var month = date.getMonth() + 1;
        var strDate = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
        }
        return date.getFullYear() + seperator + month + seperator + strDate;
    },

    // 获取当前时间的中文显示
    displayDate: function () {

        function tabCommon(num) {
            return num < 10 ? '' + num : parseInt(num.toString().charAt(1)) === 0 ? num.toString().charAt(0) + '-' : num.toString().charAt(0) + '-' + num.toString().charAt(1);
        }

        // 对于某时某分，某分在10以下时，加零，即某时零某分
        function tabMins(num) {
            return num < 10 ? '#' + num : parseInt(num.toString().charAt(1)) === 0 ? num.toString().charAt(0) + '-' : num.toString().charAt(0) + '-' + num.toString().charAt(1);
        }

        var oData = new Date();
        var days = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
        var str = oData.getFullYear() + '年'
            + tabCommon(oData.getMonth() + 1) + '月'
            + tabCommon(oData.getDate()) + '日'
            + tabCommon(oData.getHours()) + '时'
            + tabMins(oData.getMinutes()) + '分';

        var sLast = '';
        for (var i = 0; i < str.length; i++) {
            if (isNaN(parseInt(str.charAt(i)))) {
                if (str.charAt(i) === '-') {
                    sLast += days[days.length - 1];
                } else if (str.charAt(i) === '#') {
                    sLast += days[0];
                } else {
                    sLast += str.charAt(i);
                }

            } else {
                sLast += days[str.charAt(i)];
            }
        }
        return sLast;
    },

    // 检查是否为日期时间  （eg. 2016-08-21 13:12:24）
    checkDateTime: function (string) {
        var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
        var r = string.match(reg);
        if (r == null) {
            return false;
        }
        r[2] = r[2] - 1;
        var d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
        var today = new Date();
        if (today.getFullYear() - d.getFullYear() > 130) {
            return false;
        }
        if (d.getFullYear() != r[1]) {
            return false;
        }
        if (d.getMonth() != r[2]) {
            return false;
        }
        if (d.getDate() != r[3]) {
            return false;
        }
        if (d.getHours() != r[4]) {
            return false;
        }
        if (d.getMinutes() != r[5]) {
            return false;
        }
        return d.getSeconds() == r[6];
    },

    // 参数date可以格式化为xx-xx-xx或xxxx-xx-xx或用/分割
    checkDate: function (string) {
        if (new Date().getFullYear() - new Date(string).getFullYear() > 130) return false;
        return (new Date(string).getDate() == string.substring(string.length - 2));
    },

    // 日期增加一天
    addDate: function (orignDateStr, addDays) {
        var orignDate = new Date(orignDateStr);
        orignDate.setDate(orignDate.getDate() + addDays);
        return orignDate.format("yyyy-MM-dd");
    },
};


/**
 * 将format方法直接加在日期的原型对象上
 */
Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};